// 封装请求工具，支持Promise



// 定义baseURL
const baseURL = "https://mall-gateway.i.xgimi.com";

function request(option) {
	// 正则是否包含http
	var reg = /^https?/;
	// 如果包含就不样加baseURL，
	var url = reg.test(option.url) ? option.url : baseURL + option.url;
	// 请求方法默认get
	var method = option.method || "GET";
	// 请求data数据
	var data = option.data;
	// 定义header
	var header = {};
	header.channel = "h5";
	header.source = 1;
	header.token = uni.getStorageSync("passToken");
	// 合并用户的header与默认的data
	header = {
		...header,
		...option.header
	}
	// 返回的是一个promsie
	return new Promise((resolve, reject) => {
		// 添加加载提示
		if (option.loading) {
			uni.showLoading({
				title: option.loading.title,
			})
		}
		uni.request({
			url,
			method,
			data,
			header,
			success(res) {
				if (res.data.code !== 200 && res.data.ret !== true) {
					uni.showToast({
						title: res.data.message || "请求失败",
						icon: 'error'
					})
				}
				// 成功
				resolve(res.data);
			},
			fail(err) {
				uni.showToast({
					title: err.message || "请求失败",
					icon: 'error'
				})
				// 失败reject
				reject(err);
			},
			complete() {
				// 隐藏加载提示
				if (option.loading) {
					uni.hideLoading();
				}
			}
		})
	})
}
// 写几个简便方法
request.get = function(url, data, config) {
	return request({
		url,
		method: "GET",
		data,
		...config
	})
}
request.post = function(url, data, config) {
	return request({
		url,
		method: "POST",
		data,
		...config
	})
}
export default request;